
Rajinder Singh
Deep Learning Researcher

क्या आपके वेब स्क्रैपिंग या ऑटोमेशन कार्य एक ऐसे अटक जैसे AWS WAF (वेब एप्लिकेशन फायरवॉल) द्वारा रोके जा रहे हैं? बहुत से विकासकर्ताओं के लिए यह एक आम चुनौती है। AWS WAF एमेजॉन द्वारा डिज़ाइन किया गया एक शक्तिशाली सुरक्षा सेवा है जो वेबसाइटों को सामान्य वेब हमलों और बुरे बॉट्स से बचाने के लिए डिज़ाइन किया गया है। यह ट्रैफिक पैटर्न के विश्लेषण के माध्यम से संदिग्ध गतिविधि की पहचान करता है और ब्लॉक करता है, जिसमें जावास्क्रिप्ट चुनौतियां (202 स्थिति कोड वापस करता है) और अधिक जटिल चित्र कैप्चा (405 स्थिति कोड वापस करता है) शामिल हैं।
हालांकि वेबसाइट सुरक्षा के लिए आवश्यक, ये सुरक्षा उपाय वास्तविक ऑटोमेशन स्क्रिप्ट के लिए एक मुख्य बाधा बन सकते हैं। लेकिन, सही उपकरणों के साथ, आप इन सुरक्षा उपायों को सुगमता से बाहर कर सकते हैं। इस गाइड आपको Python और CapSolver के उपयोग के बारे में विस्तृत चरण-दर-चरण दिशा-निर्देश प्रदान करेगा। इससे आप आसानी से aws-waf-token प्राप्त कर सकते हैं, जिससे AWS WAF-सुरक्षित वेबसाइटों तक बिना किसी बाधा के पहुंच प्राप्त कर सकते हैं।
शुरू करने से पहले, निम्नलिखित उपकरणों और जानकारी के साथ तैयार रहें:
सबसे पहले, हमें HTTP मांग भेजने और HTML पार्स करने के लिए कुछ महत्वपूर्ण पायथन लाइब्रेरी स्थापित करने की आवश्यकता होगी। अपने टर्मिनल में निम्नलिखित आदेश चलाएं:
pip install capsolver requests beautifulsoup4
निम्नलिखित AWS WAF चुनौतियों और कैप्चा के उपयोग के साथ AWS WAF चुनौतियों के हल करने के लिए पूर्ण पायथन कोड है। यह कोड आधुनिक अभ्यास पर आधारित है, CapSolver आधिकारिक दस्तावेज़ीकरण से, एक स्पष्ट संरचना के साथ है और दो सबसे आम ब्लॉकिंग परिदृश्यों को स्वचालित रूप से संभालता है।
import capsolver
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urlparse
# -------------------कृपया इन मानों को संशोधित करें-------------------
# अपने प्रॉक्सी विवरण, प्रारूप: http://यूजरनाम:पासवर्ड@आईपी:पोर्ट
PROXY = "http://यूजरनाम:पासवर्ड@आईपी:पोर्ट"
# लक्षित वेबसाइट का URL जिसके लिए आप AWS WAF को हल करना चाहते हैं
PAGE_URL = "https://www.आपकी-एवएस-सुरक्षित-वेबसाइट.com"
# CapSolver डैशबोर्ड से अपनी API कुंजी
CAPSOLVER_API_KEY = "अपनी_API_कुंजी"
# ----------------------------------------------------------------
def solve_aws_waf(is_captcha_challenge, **kwargs):
"""
CapSolver के उपयोग से AWS WAF चुनौति या कैप्चा हल करता है।
:param is_captcha_challenge: कैप्चा (405 स्थिति कोड) के लिए सही, जावास्क्रिप्ट चुनौति (202 स्थिति कोड) के लिए गलत।
:param kwargs: हल करने के लिए आवश्यक पैरामीटर।
:return: समाधान ऑब्जेक्ट, असफलता पर None।
"""
task_type = "AntiAwsWafTask" if is_captcha_challenge else "AntiAwsWafTaskProxyLess"
print(f"'{task_type}' कार्य बना रहे हैं...")
task_payload = {
"type": task_type,
"websiteURL": PAGE_URL,
}
# चुनौति प्रकार के आधार पर विशिष्ट पैरामीटर जोड़ें
if is_captcha_challenge:
# कैप्चा चुनौतियों के लिए, awsKey, awsIv, awsContext की आवश्यकता होती है
task_payload.update({
"awsKey": kwargs.get("awsKey"),
"awsIv": kwargs.get("awsIv"),
"awsContext": kwargs.get("awsContext"),
"awsChallengeJS": kwargs.get("awsChallengeJS"),
"proxy": PROXY
})
else:
# जावास्क्रिप्ट चुनौतियों के लिए, केवल awsChallengeJS URL की आवश्यकता होती है
task_payload["awsChallengeJS"] = kwargs.get("awsChallengeJS")
try:
solution = capsolver.solve(task_payload)
if solution and solution.get("errorId", 0) == 0:
print("समाधान सफलतापूर्वक प्राप्त कर लिया गया!")
return solution
else:
error_desc = solution.get('errorDescription', 'अज्ञात त्रुटि') if solution else 'अज्ञात त्रुटि'
print(f"कार्य हल करने में असफल: {error_desc}")
return None
except Exception as e:
print(f"CapSolver कॉल करते समय एक अपवाद घटित हुआ: {e}")
return None
def main():
"""पूरी प्रक्रिया के निष्पादन के लिए मुख्य कार्य।"""
capsolver.api_key = CAPSOLVER_API_KEY
session = requests.Session()
session.proxies = {"http": PROXY, "https": PROXY}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
}
print(f"प्रयास कर रहे हैं: {PAGE_URL}")
response = session.get(PAGE_URL, headers=headers)
print(f"प्राप्त स्थिति कोड: {response.status_code}")
solution = None
# परिदृश्य 1: AWS जावास्क्रिप्ट चुनौति का प्रबंधन (स्थिति कोड 202)
if response.status_code == 202:
print("AWS जावास्क्रिप्ट चुनौति पहचान ली गई।")
soup = BeautifulSoup(response.content, 'html.parser')
script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
if script_tag:
challenge_js_url = script_tag['src']
print(f"चुनौति जावास्क्रिप्ट यूआरएल पाया गया: {challenge_js_url}")
solution = solve_aws_waf(is_captcha_challenge=False, awsChallengeJS=challenge_js_url)
else:
print("त्रुटि: AWS चुनौति स्क्रिप्ट नहीं मिली।")
# परिदृश्य 2: AWS कैप्चा का प्रबंधन (स्थिति कोड 405)
elif response.status_code == 405:
print("AWS कैप्चा पहचान ली गई।")
soup = BeautifulSoup(response.content, 'html.parser')
script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
script_text_tag = soup.find('script', string=re.compile('.*key.*'))
if script_tag and script_text_tag:
challenge_js_url = script_tag['src']
script_text = script_text_tag.string
key = re.search(r'"key":"(.*?)"', script_text).group(1)
iv = re.search(r'"iv":"(.*?)"', script_text).group(1)
context = re.search(r'"context":"(.*?)"', script_text).group(1)
print(f"अनुक्रम निकाले गए: Key={key[:5]}..., IV={iv[:5]}..., Context={context[:5]}...")
solution = solve_aws_waf(
is_captcha_challenge=True,
awsKey=key,
awsIv=iv,
awsContext=context,
awsChallengeJS=challenge_js_url
)
else:
print("त्रुटि: पृष्ठ से सभी आवश्यक कैप्चा पैरामीटर निकालने में असफल।")
# यदि समाधान सफल रहा, कुकी सेट करें और फिर से मांग करें
if solution and solution.get("cookie"):
aws_token = solution["cookie"]
print(f"सफलतापूर्वक एवएस-वाफ-टोकन प्राप्त किया गया: {aws_token[:30]}...")
domain = f".{urlparse(PAGE_URL).netloc}"
session.cookies.set("aws-waf-token", aws_token, domain=domain)
print("कुकी सेट कर रहे हैं। फिर से मांग कर रहे हैं...")
final_response = session.get(PAGE_URL, headers=headers)
print(f"अंतिम मांग स्थिति कोड: {final_response.status_code}")
if final_response.status_code == 200:
print("एवएस डब्ल्यूएफ बर्बाद कर दिया गया!")
# print(final_response.text) # अपने पृष्ठ सामग्री देखने के लिए अनकमेंट करें
else:
print("कुकी सेट करने के बाद मांग असफल रही। टोकन या प्रॉक्सी जांचें।")
else:
print("एवएस डब्ल्यूएफ बर्बाद करने में असफल। बाहर निकल रहे हैं।")
if __name__ == "__main__":
main()
कोड चलाने से पहले, निम्नलिखित चर के मानों को बदलें:
PROXY: अपने प्रॉक्सी सर्वर पता और प्राधिकरण के साथ बदलें। प्रारूप होना चाहिए http://यूजरनाम:पासवर्ड@आईपी:पोर्ट।CAPSOLVER_API_KEY: अपनी API कुंजी को अपने CapSolver डैशबोर्ड में खोजें और अंतर्निहित जानकारी के साथ बदलें।PAGE_URL: एवएस डब्ल्यूएफ से सुरक्षित लक्षित वेबसाइट के URL से बदलें।पायथन ऑटोमेशन वर्कफ़्लो में CapSolver के एकीकरण के साथ, आप AWS WAF द्वारा उत्पन्न जावास्क्रिप्ट चुनौतियों और कैप्चा को सुगमता से हल कर सकते हैं। इस दृष्टिकोण एक जटिल सत्यापन प्रक्रिया को एक एपीआई कॉल में सरल बनाता है, जिससे आप बॉट-प्रतिरोधी तकनीकों के साथ लगातार लड़ाई में फंसे रहने के बजाय अपने मुख्य व्यावसायिक तर्क पर ध्यान केंद्रित कर सकते हैं। एवएस डब्ल्यूएफ से सुरक्षित साइटों के साथ अंतर करने के लिए किसी भी विकासकर्ता के लिए यह अमूल्य समाधान है।
CapSolver खाता भरने के समय बोनस कोड CAPN का उपयोग करें ताकि प्रत्येक भरोसे में 5% बोनस मिले — कोई सीमा नहीं।
अब अपने CapSolver डैशबोर्ड में इसे एक्सपायर करें
प्रश्न 1: मुझे प्रॉक्सी क्यों उपयोग करना चाहिए?
उत्तर 1: AWS WAF आईपी पतों के व्यवहार की कड़ी निगरानी करता है। डेटा केंद्रों से या आईपी जो असामान्य रूप से चिह्नित किए गए हैं, उनके अनुरोध आसानी से ब्लॉक कर दिए जाते हैं। एक उच्च गुणवत्ता वाले आवासीय या आईएसपी प्रॉक्सी का उपयोग वास्तविक उपयोगकर्ता के अंतर्निहित व्यवहार के समान होता है और डब्ल्यूएफ को पार करने के सफलता के लिए आवश्यक पहला चरण है।
प्रश्न 2: aws-waf-token की वैधता कितनी होती है?
उत्तर 2: इस टोकन की वैधता बहुत छोटी होती है, शायद केवल कुछ मिनट। जब टोकन समाप्त हो जाता है, आपको फिर से सत्यापन प्रक्रिया चलानी होगी नए टोकन के लिए। अपने एप्लिकेशन में टोकन अद्यतन ताकत डिज़ाइन करना महत्वपूर्ण है।
प्रश्न 3: AntiAwsWafTask और AntiAwsWafTaskProxyLess के बीच क्या अंतर है?
उत्तर 3: AntiAwsWafTask एक कैप्चा हल करने के लिए उपयोग किया जाता है, जिसमें एक पूर्ण ब्राउज़र वातावरण की आवश्यकता होती है (आमतौर पर 405 स्थिति कोड के साथ देखा जाता है) और आपको एक प्रॉक्सी प्रदान करना आवश्यक होता है। AntiAwsWafTaskProxyLess एक सरल जावास्क्रिप्ट चुनौति (202 स्थिति कोड) के लिए उपयोग किया जाता है, जो कैपसॉल्वर के सर्वर पर हल किया जाता है और आपको कोई प्रॉक्सी प्रदान करने की आवश्यकता नहीं होती। हमारा कोड स्थिति कोड के आधार पर उपयुक्त कार्य प्रकार स्वचालित रूप से चुनता है।
प्रश्न 4: क्या यह विधि एवएस डब्ल्यूएफ का उपयोग करने वाले सभी वेबसाइटों के लिए काम करती है?
उत्तर 4: यह विधि अधिकांश मानक एवएस डब्ल्यूएफ सेटिंग के लिए प्रभावी है। हालांकि, वेबसाइट मालिक वाफ नियमों को कस्टम कर सकते हैं, जो उन्हें बाहर निकालने में कठिनता बढ़ा सकते हैं। यदि आपको समस्या का सामना करना पड़ता है, तो कैपसॉल्वर दस्तावेज़ीकरण या समर्थन के संपर्क करें। अलग-अलग चुनौतियां अलग-अलग रणनीति की आवश्यकता हो सकती है।
कैपसॉल्वर के साथ वेब स्क्रैपिंग में AWS WAF कैप्चा हल करें। कार्यकुशलता में वृद्धि करें, चुनौतियां हल करें और डेटा के सुचारू रूप से प्रवाह करें।

एक विस्तृत PHP गाइड, AWS WAF कैप्चा और चुनौती के समाधान के लिए भरोसेमंद स्क्रैपिंग और स्वचालन के लिए
